Multicast এবং Broadcast Options এর ব্যবহার

Computer Programming - ইউনিক্স সকেট (Unix Socket) Socket Options এবং Control (Socket Options and Control) |
310
310

Multicast এবং Broadcast হলো নেটওয়ার্কিং কৌশল, যা একাধিক ডিভাইসে একসাথে ডেটা পাঠাতে ব্যবহৃত হয়। নেটওয়ার্ক প্রোগ্রামিংয়ে, setsockopt() এবং getsockopt() ফাংশন ব্যবহার করে Multicast এবং Broadcast Options কনফিগার করে বিভিন্ন ডিভাইসে ডেটা ট্রান্সমিশন করা যায়। এগুলোর মাধ্যমে একাধিক সংযোগ দ্রুত এবং কার্যকরভাবে পরিচালনা করা যায়, বিশেষত যেখানে একাধিক ক্লায়েন্টকে একই ডেটা একসাথে পাঠাতে হয়।

1. Multicast

Multicast হলো এমন একটি প্রক্রিয়া, যেখানে একটি ডেটা প্যাকেট একই সাথে একাধিক নির্দিষ্ট ডিভাইসে (Multicast Group) পাঠানো হয়। এটি সাধারণত UDP প্রোটোকল ব্যবহার করে এবং ডিভাইসগুলোতে একই ডেটা স্ট্রিম পৌঁছাতে সক্ষম। Multicast ব্যবহৃত হয় লাইভ ভিডিও স্ট্রিমিং, রিয়েল-টাইম ডেটা শেয়ারিং, এবং লাইভ গেমিংয়ের মতো অ্যাপ্লিকেশনগুলোর জন্য।

Multicast Options এবং তাদের ব্যবহার

IP_MULTICAST_TTL:

  • Multicast Packet-এর TTL (Time-to-Live) নির্ধারণ করতে ব্যবহৃত হয়, যা নির্দিষ্ট করে কতগুলি রাউটার Multicast Packet ফরওয়ার্ড করতে পারবে।
  • ডিফল্ট TTL মান হলো 1, যা একই নেটওয়ার্কে (local subnet) Multicast সীমাবদ্ধ রাখে। এটি বাড়িয়ে বিভিন্ন নেটওয়ার্কে বা ইন্টারনেটে Multicast করা যায়।

IP_ADD_MEMBERSHIP:

  • একটি Socket-কে Multicast Group-এ যোগ করতে ব্যবহৃত হয়, যাতে Socket সেই গ্রুপ থেকে ডেটা প্যাকেট গ্রহণ করতে পারে।
  • Multicast Group-এ যোগ দেওয়ার মাধ্যমে, Socket নির্দিষ্ট Multicast Address থেকে ডেটা গ্রহণ করতে সক্ষম হয়।

IP_DROP_MEMBERSHIP:

  • একটি Socket-কে Multicast Group থেকে বাদ দিতে ব্যবহৃত হয়।

Multicast Socket তৈরি এবং ব্যবহারের উদাহরণ (C ভাষায়)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <sys/socket.h>

#define PORT 12345
#define GROUP "239.0.0.1" // Multicast Address

int main() {
    int sockfd;
    struct sockaddr_in multicast_addr;
    char message[] = "Hello Multicast!";
    int ttl = 5; // TTL মান সেট করা

    // UDP Socket তৈরি করা
    sockfd = socket(AF_INET, SOCK_DGRAM, 0);
    if (sockfd < 0) {
        perror("Socket creation failed");
        exit(EXIT_FAILURE);
    }

    // Multicast TTL সেট করা
    if (setsockopt(sockfd, IPPROTO_IP, IP_MULTICAST_TTL, &ttl, sizeof(ttl)) < 0) {
        perror("Setting TTL failed");
        close(sockfd);
        exit(EXIT_FAILURE);
    }

    // Multicast Address এবং Port সেট করা
    memset(&multicast_addr, 0, sizeof(multicast_addr));
    multicast_addr.sin_family = AF_INET;
    multicast_addr.sin_addr.s_addr = inet_addr(GROUP);
    multicast_addr.sin_port = htons(PORT);

    // Multicast মেসেজ পাঠানো
    if (sendto(sockfd, message, sizeof(message), 0, (struct sockaddr*)&multicast_addr, sizeof(multicast_addr)) < 0) {
        perror("Sendto failed");
        close(sockfd);
        exit(EXIT_FAILURE);
    }

    printf("Multicast message sent!\n");

    close(sockfd);
    return 0;
}
  • এখানে একটি UDP Multicast Socket তৈরি করা হয়েছে, যা নির্দিষ্ট Multicast Address এবং Port-এ একটি মেসেজ পাঠায়। IP_MULTICAST_TTL সেট করে TTL মান 5 নির্ধারণ করা হয়েছে।

2. Broadcast

Broadcast হলো এমন একটি প্রক্রিয়া, যেখানে একটি ডেটা প্যাকেট নেটওয়ার্কে সকল ডিভাইসে পাঠানো হয়। এটি সাধারণত UDP প্রোটোকল ব্যবহার করে, এবং একই নেটওয়ার্কে থাকা সব ডিভাইসকে (subnet) একই সাথে ডেটা পাঠায়। Broadcast সাধারণত ডিসকভারি প্রোটোকল বা নেটওয়ার্কের ডিভাইসগুলোকে মেসেজ পাঠাতে ব্যবহৃত হয়।

Broadcast Options এবং তাদের ব্যবহার

  1. SO_BROADCAST:
    • এটি সক্রিয় করলে একটি Socket Broadcast প্যাকেট পাঠাতে পারে।
    • Broadcast ব্যবহার করে একই নেটওয়ার্কে থাকা সমস্ত ডিভাইসে ডেটা পাঠানো হয়, যা নেটওয়ার্ক ডিসকভারি বা আলার্ম সিস্টেমের মতো অ্যাপ্লিকেশনের জন্য কার্যকর।

Broadcast Socket তৈরি এবং ব্যবহারের উদাহরণ (C ভাষায়)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <sys/socket.h>

#define PORT 12345
#define BROADCAST_IP "255.255.255.255" // Broadcast Address

int main() {
    int sockfd;
    struct sockaddr_in broadcast_addr;
    char message[] = "Hello Broadcast!";
    int opt = 1;

    // UDP Socket তৈরি করা
    sockfd = socket(AF_INET, SOCK_DGRAM, 0);
    if (sockfd < 0) {
        perror("Socket creation failed");
        exit(EXIT_FAILURE);
    }

    // SO_BROADCAST অপশন সেট করা
    if (setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &opt, sizeof(opt)) < 0) {
        perror("Setting SO_BROADCAST failed");
        close(sockfd);
        exit(EXIT_FAILURE);
    }

    // Broadcast Address এবং Port সেট করা
    memset(&broadcast_addr, 0, sizeof(broadcast_addr));
    broadcast_addr.sin_family = AF_INET;
    broadcast_addr.sin_addr.s_addr = inet_addr(BROADCAST_IP);
    broadcast_addr.sin_port = htons(PORT);

    // Broadcast মেসেজ পাঠানো
    if (sendto(sockfd, message, sizeof(message), 0, (struct sockaddr*)&broadcast_addr, sizeof(broadcast_addr)) < 0) {
        perror("Sendto failed");
        close(sockfd);
        exit(EXIT_FAILURE);
    }

    printf("Broadcast message sent!\n");

    close(sockfd);
    return 0;
}
  • এখানে একটি UDP Broadcast Socket তৈরি করা হয়েছে, যা Broadcast Address 255.255.255.255 ব্যবহার করে সমস্ত ডিভাইসে মেসেজ পাঠায়। SO_BROADCAST অপশন সক্রিয় করে এটি সম্ভব করা হয়েছে।

Multicast এবং Broadcast এর মধ্যে পার্থক্য

বৈশিষ্ট্যMulticastBroadcast
ডেটা ট্রান্সমিশন পদ্ধতিনির্দিষ্ট Multicast Group-এ ডেটা পাঠানো হয়একই নেটওয়ার্কে থাকা সব ডিভাইসে ডেটা পাঠানো হয়
ব্যবহারলাইভ স্ট্রিমিং, রিয়েল-টাইম ডেটা শেয়ারিংনেটওয়ার্ক ডিসকভারি, আলার্ম সিস্টেম
কনফিগারেশনMulticast Address ব্যবহার করেBroadcast Address (255.255.255.255)
প্রোটোকলUDP (সাধারণত)UDP (সাধারণত)
common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion